﻿Legion 2 v38

--------------
1. Instalacja
--------------

Do katalogu „DATA” przekopiować wszystkie oryginalne pliki slf z gry JA2.

Uruchomienie modyfikacji:

1. Wybieram „Starter Legion 2.exe”.
2. W oknie do wybory mamy dwa tryby gry: Vanilla oraz v1.13. Do pierwszego i drugiego trybu można przypisać dodatek dużych map.
3. Klikamy uruchom.

Przy kolejnym uruchomieniu gry, można korzystać z pliku „JA2L2.exe” lub innego.
Jeżeli będziemy chcieli zmienić tryb gry, to ponownie uruchamiamy grę plikiem „Starter Legion 2.exe”.

Uwaga! Najlepiej grać w trybie okna. Jeżeli v1.13 niespodziewanie zawiesi się, to taki proces łatwo „zabić”. Nie trzeba używać twardego resetu.

---------------------
2. Aktualizacja v1.13
---------------------

Aby zaktualizować v1.13, należy wejść do katalogu „Data-Legion2\v1.13\”. Wykasować katalogi „Data” i „Data-1.13”. Na miejsce starych katalogów wgrywamy nowe. Następnie do katalogu „Data-Legion2\v1.13\Data\” kopiujemy katalog „Tilecache” z katalogu „Data”. Nadpisując istniejące pliki.
Kolejny etap to aktualizacja plików lokalizacyjnych. Wchodzimy do katalogu „Data-Legion2\v1.13\Language\Polish\” i kasujemy stare katalogi. Na ich miejsce wgrywamy nowe.


Oficjalne pliki gry - 2014
https://ja2svn.no-ip.org/source/ja2_v1.13_data/branches/ja2_data_official_2014

Oficjalne pliki lokalizacyjne - 2014
https://ja2svn.no-ip.org/source/ja2/branches/ja2_data_language_official_2014

Oficjalny kod źródłowy - 2014
https://ja2svn.no-ip.org/source/ja2/branches/ja2_source_official_2014

-------------------------------------------------
3. Klika ważnych informacji dotyczących gry L2v38
-------------------------------------------------

Modyfikacja posiada poprawione zadania, oraz nowe. Wprowadzono nowe rzeczy, które były zaprojektowane na papierze :) ale nigdy nie zostały wdrożone do modyfikacji, albo znajdowały się w grze i niebyły aktywne (np.: postacie npc, inny sektor wyprowadzenia poszukiwanej, scenki czy losowe zdarzenia, które mają wpływ na główny wątek). 

W L2v38 został wprowadzony wymóg noszenia ze sobą laptopa. Jeżeli najemnik straci laptop lub będzie on mocno uszkodzony, to nie będzie dostępu do internetu. Laptopów w drużynie może być więcej. Są to specjale laptopy AIM. W podziemnych sektorach poruszając się w trybie taktycznym nie będzie połączenia z internetem. Linki będą martwe, albo ikona laptopa będzie zablokowana, gdy będzie jego brak w inwentarzu. Jeżeli druga drużyna znajduje się na powierzchni i ma laptop, a my wejdziemy w tryb taktyczny, to dostęp do internetu zostanie aktywowany.

Do rekrutacji poszukiwanej jest wymagane zdjęcie lub inny przedmiot, który dostaniemy od Alfreda. Jeżeli jakimś przypadkiem nie dostaliśmy zdjęcia czy innej rzeczy od Alfreda, to można np. zdjęcie otrzymać otwierając plik „Data-Legion2\Data-Files\scripts\Legion2_LoadSavePatch.lua” i zmieniając wpis :

	--[[
			for a=0,254 do
				if ( FindSoldierTeam (a) == 0 ) then
					AddItemToInventory (a, 4503, 6)					
				end
			end
			]]
	

na :

			for a=0,254 do
				if ( FindSoldierTeam (a) == 0 ) then
					AddItemToInventory (a, 4503, 6)					
				end
			end
		
Kiedy wczytamy stan gry, to każdy najemnik w drużynie dostanie zdjęcie do drugiej dłoni. Dlatego najlepiej, aby w tym czasie nic innego w niej nie było. Następnie wracam do pliku „Data-Legion2\Data-Files\scripts\Legion2_LoadSavePatch.lua” i przywracamy nawiasy  --[[ i ]] lub usuwamy już nie potrzeby wpis.

Jest też opcja losowego wyłączenia\włączenia dostępu do internetu. Działa to tylko na mapie strategicznej podczas kompresji czasu lub podróży. Domyślnie opcja wyłączona. Aby ją włączyć wchodzimy do pliku „Data-Legion2\Data-Files\scripts\GameInit.lua” i szukamy „local WYL_LAPTOP = false” zmieniamy na „local WYL_LAPTOP = true”. Czynność wykonujemy przy wyborze nowej gry. Natomiast jeśli już gramy, to otwieramy plik „Data-Legion2\Data-Files\scripts\Legion2_LoadSavePatch.lua” i umieszczamy w funkcji InitPatche() wpis :

	if ( CheckGlobalBool(300) == false ) then
		AddAdvancedStrategicEvent( 3, 97, 60*7, 0 )
		SetGlobalTrue (300)
	end
	
Jeżeli chcemy dokonać zmian w pliku „Ja2_Options.ini”, to wchodzimy do katalogu „Data-Legion2\Data-Files\”. Czynność wykonujemy grając w trybie v1.13. Jeżeli gramy w trybie „Vanilla”, to zmiany wykonujemy w pliku „Data-Legion2\Addons\Data-Vanilla\Data-Files\”.

W niektórych przypadkach osoba, którą będziemy musieli eskortować (zadania), będzie potrzebowała przedmiotu, wymaganego w aktualnym zadaniu. Aby jej dać taki przedmiot, musimy go wybrać z naszego inwentarza, a następnie najechać kursorem na postać i dać jej przedmiot. Ta osoba musi być już przyłączona do drużyny.

--------------------------------
4. Nowe pliki do modyfikacji gry
--------------------------------

Modyfikacja wprowadza nowe pliki oraz katalogi do ich przechowywania.

Katalog „Legion_data”, „Data-Legion2\Data-Files\scripts\Legion2_HandleNPCDoAction\”, Data-Legion2\Data-Files\scripts\Legion2_Items\ oraz „Data-Legion2\Data-Files\TableData\Profile\”.

Katalogi :

  Legion_data – przechowuje kilka plików graficzny
  Legion2_HandleNPCDoAction – przechowuje skrypty akcji dla postać NPC
  Legion2_Items – przechowuje nowe przedmioty. Modyfikacja Legion 2 v38 nie modyfikuje plików xml z przedmiotami. Dzięki temu może być kompatybilna z przyszłymi wydaniami v1.13. 
Profile – wszystkie nowe profile. Modyfikacja Legion 2 v38 nie modyfikuje plików xml z profilami. Dzięki temu może być kompatybilna z przyszłymi wydaniami v1.13. 

Pliki : 
  ItemsNames.xml, MercNames.xml -  Pierwszy przechowuje nazwy nowych przedmiotów, drugi imiona nowych postaci
  Legion2_Options.ini - plik przechowuje konfiguracje modyfikacji
  Legion2_Campaign Init.lua – plik do definiowania alternatywnych sektorów. Nie trzeba edytować pliku AltSectors.xml. 
  Legion2_GameEventHook.lua – plik wykonuje zdarzenia na mapie taktycznej, podczas kompresji czasu.
  Legion2_LoadSavePatch.lua – plik jest wykonywany podczas wczytywania stanu gry.
  Legion2_RPCFacesSmall.lua – plik definiuje nowe małe twarze. Modyfikacja Legion 2 v38 nie modyfikuje pliku RPCFacesSmall.xml. Dzięki temu może być kompatybilna z przyszłymi wydaniami v1.13. 

Są też nowe funkcje używane w plikach lua. Można je rozpoznać po początkowej nazwie „Legion2_”.

---------------------------
5. Kod źródłowy Legion 2v38
---------------------------

Zmiany w kodzie źródłowym są wydzielone. Aby je zobaczyć możemy skorzystać z programu WinMerge (http://winmerge.org/). W programie wybieram katalog z kodem źródłowym Legion2v38 oraz drugi katalog z aktualną v1.13. Wybieramy „Plik → Otwórz” i w oknie wybieramy kody źródłowe.

Np:

Lewa : C:\Legion2v38new\Build\
Prawa : C:\Documents and Settings\ppp\Pulpit\SVN\v1.13\Build\

Można też wszystkie pliki *.h i *.cpp przeszukać w poszukiwaniu definicji LEGION2, LEGION2RANDOM, JA113NODEMO, LAPTOPLEGION2, LEGION2FACTS

Kod źródłowy zawiera kilka nowych plików  : 

Laptop\legion.h 
Laptop\legion.cpp       
Laptop\legion_info.h           
Laptop\legion_info.cpp         
Laptop\legion_ja1.cpp           
Laptop\legion_ja1.h               
Laptop\legion_ja2.h               
Laptop\legion_ja2.cpp           
Laptop\legion_mag.h               
Laptop\legion_mag.cpp   
Tactical\XML_MercName.cpp
Tactical\XML_ItemsName.cpp
legion cfg.h
legion cfg.cpp
       
Dodatkowo dostarczona jest łatka do kodu źródłowego v1.13 przechowywanego przez repozytoriom SVN. Taką łatkę można wgrać na katalog SVN. Aby tego dokonać klikamy na katalogu „Build” prawym przyciskiem i z menu wybieramy „TortoiseSVN->Zastosuj poprawkę...” wybieramy poprawkę „*.patch”. W następnym oknie wybieramy „Popraw wszystkie pozycje”. Automatycznie zostaną poprawione pliki. Jeżeli nie wyświetli żadnego konfliktu między plikami, będzie to oznaczało udane scalenie plików. Jeśli wyświetli się konflikt pomiędzy którymś z plików, to taki pliki musimy sami poprawić, najlepiej porównując jego zawartość z drugim takim samym plikiem.

Jeżeli wszystko zakończy się pomyślnie, to poprawiony katalog „Build” można przegrać w inne miejsce, a z katalogu SVN możemy wycofać nasze zmiany. Klikamy na katalog i wybieramy „TortoiseSVN->Wycofaj zmiany”.

Kolejna czynność, to przekopiowanie do naszego zmodyfikowanego katalogu „Build” plików :

Laptop\legion.h 
Laptop\legion.cpp       
Laptop\legion_info.h           
Laptop\legion_info.cpp         
Laptop\legion_ja1.cpp           
Laptop\legion_ja1.h               
Laptop\legion_ja2.h               
Laptop\legion_ja2.cpp           
Laptop\legion_mag.h               
Laptop\legion_mag.cpp   
Tactical\XML_MercName.cpp
Tactical\XML_ItemsName.cpp
legion cfg.h
legion cfg.cpp

Następnie w VS2008 (lub nowszym), trzeba dodać pliki do projektu.

ja2->Header Files

legion cfg.h

ja2->Source Files

legion cfg.cpp

Laptop->Header Files

Laptop\legion.h     
Laptop\legion_info.h                         
Laptop\legion_ja1.h               
Laptop\legion_ja2.h                      
Laptop\legion_mag.h       

Laptop->Source Files

Laptop\legion.cpp     
Laptop\legion_info. cpp                         
Laptop\legion_ja1. cpp             
Laptop\legion_ja2. cpp                      
Laptop\legion_mag. cpp

Tactical->Source Files

Tactical\XML_MercName.cpp
Tactical\XML_ItemsName.cpp

Kolejny etap, to otwarcie pliku „builddefines.h” i sprawdzamy czy są ustawione wartości :

#define LEGION2
#define LEGION2RANDOM
#define JA113NODEMO
#define LAPTOPLEGION2
#define LEGION2FACTS

#define LEGION2 – jest wymagana przy kompilacji modyfikacji;
#define JA113NODEMO – Też jest wymagana przy kompilacji. Jeżeli wyłączymy, to wszystkie scenki oraz zdarzenia powiązane z królową będą dostępne. W L2 są one zbędne.
#define LEGION2RANDOM – definiuje możliwość używania funkcji "InitStrategicLayer()" w pliku GameInit.lua. Powiązane z losowym sektorem początkowym.
#define LAPTOPLEGION2 – powiązane z laptopem, który jest wymagany w inwentarzu.
#define LEGION2FACTS – kolejny wymagany wpis. Wartość powiązana z plikiem Quests.lua i umieszczoną w nim funkcją „Legion2_CheckFact (usFact, ubProfileID)”.

Cała migracja no nowy kod źródłowy, nie powinna sprawić problemów osobą, które mają jakąś wiedzę na temat C++. 

---------------------------
6. Linki
---------------------------

http://www.mediafire.com/folder/7293j0jfbqwjb/v38   (aktualna wersja całej modyfikacji, łatki, dodatki itp.)

http://www.bears-pit.com/board/ubbthreads.php?ubb=cfrm

http://jagged-alliance.pl

http://ja2.su

http://jagged-alliance2.de

http://jaggedalliance.pl



Pliki gry 1.13 :

https://ja2svn.dyndns.org/source/ja2_v1.13_data/GameDir

Pliki lokalizacyjne v1.13 :

https://ja2svn.dyndns.org/source/ja2/trunk/GameData

Kod źródłowy v1.13 :

https://ja2svn.dyndns.org/source/ja2
